/**
 * 给定一个大小为 n 的数组，找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

    你可以假设数组是非空的，并且给定的数组总是存在多数元素。

     

    示例 1:

    输入: [3,2,3]
    输出: 3
    示例 2:

    输入: [2,2,1,1,1,2,2]
    输出: 2

    来源：力扣（LeetCode）
    链接：https://leetcode-cn.com/problems/majority-element
    著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

var findMostItem = arr => {
    if(arr.length === 1) {
      return arr[0];
    }
    
    let pivot = arr.length/2;
    
    // 利用hash表
    let weakmap = new WeakMap();
    for(let i=0;i<arr.length;i++) {
      if(weakmap[arr[i]]) {
        weakmap[arr[i]]++;
        if(weakmap[arr[i]] > pivot) {
          return arr[i];
        }
      }else {
        weakmap[arr[i]] = 1;
      }
    }
    
    return null;
  }
    
 module.exports = findMostItem;